﻿#pragma once
#include "UsrTradeInterface.h"

// 模拟的行情交易
class VirtualTradeLib : public UsrTradeInterface
{
public:
	VirtualTradeLib();
	~VirtualTradeLib();

	// 市价下单 volumn为数目，小于0为做空，大于0为做多，0为平仓
	virtual void InsertOrderNow(const TD::OrderOption &pOption, TD::OrderBackFunc pBackFunc) override;
	// 返回仓位信息
	virtual bool GetPositionDetail(const std::string &pSymbol, QryData::Position &outPos) override;
	// 返回账户信息
	virtual const QryData::Account &GetAccountDetail()override { return m_account; }
	// 返回做单信息
	virtual bool GetOrderDetail(const std::string &pSymbol, TD::Order &outOrder) override;
	// 更新做单信息
	virtual bool UpdateOrderDetail(const std::string &pSymbol, const TD::Order &pOrder) override;
	// 移除做单信息
	virtual bool EraseOrderDetail(const std::string &pSymbol) override;
	// 返回所有的做单信息
	virtual const std::map<std::string, TD::Order> &GetAllOrderDetail() override { return m_orders; }

private:
	// 所有的持仓信息
	std::map<std::string, QryData::Position> m_symbolPOsition;
	QryData::Account m_account; // 账户信息
								// 记录下单信息
	std::map<std::string, TD::Order> m_orders;
};

